import { defineStore } from 'pinia'
import dayjs from 'dayjs'

export interface TodoItem {
  id: number
  projectName: string // 项目名称
  taskName: string // 任务名称
  date: string // 创建日期
  participant: string // 参与人
  projectManager: string // 项目经理
  members: string[] // 参与人
  estimatedStartTime: string // 预计开始时间
  estimatedEndTime: string // 预计结束时间
  actualStartTime: string // 实际开始时间
  actualEndTime: string // 实际结束时间
  content: string // 待办
  type: '正常' | '中断' | '异常' | ''
  failureReason: string // 异常原因
  conflictSign?: boolean // 冲突标记
}
export const useTodoStore = defineStore('todo', {
  state: () => ({
    todos: [] as TodoItem[],
  }),
  actions: {
    add(todo: TodoItem) {
      this.todos.push(todo)
    },
    update(updated: TodoItem) {
      const idx = this.todos.findIndex((t) => t.id === updated.id)
      if (idx !== -1) {
        this.todos.splice(idx, 1, updated)
      }
    },
    remove(id: number) {
      this.todos = this.todos.filter((t) => t.id !== id)
    },
    clear() {
      this.todos = []
    },
    setTodos(list: TodoItem[]) {
      this.todos = list
    },
    initTodos() {
      if (this.todos.length) return
      for (let i = 1; i <= 10; i++) {
        const now = dayjs().startOf('day').add(i, 'hour')
        this.todos.push({
          id: i,
          projectName: `示例项目 ${i}`,
          taskName: `示例任务 ${i}`,
          date: now.format('YYYY-MM-DD'),
          participant: `参与人${i}`,
          projectManager: `项目经理${i}`,
          members: [`参与人${i}`, `参与人${i + 1}`, `参与人${i + 2}`],
          content: `具体内容${i}`,
          type: i % 3 === 0 ? '中断' : i % 5 === 0 ? '异常' : '正常',
          failureReason: i % 5 === 0 ? `异常原因${i}` : '',
          estimatedStartTime: now.format('YYYY-MM-DD HH:mm'),
          estimatedEndTime: now.add(2, 'hour').format('YYYY-MM-DD HH:mm'),
          actualStartTime: now.add(1, 'hour').format('YYYY-MM-DD HH:mm'),
          actualEndTime: now.add(3, 'hour').format('YYYY-MM-DD HH:mm'),
        })
      }
    },
  },
})
